ã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããæé©åãããã«ãæéãççž®ãã倿§ãªãããžã§ã¯ãæ§æãšããŒã«å šäœã§éçºè äœéšãåäžãããããã®ãããã³ããšã³ããã«ããã£ãã·ã¥ã®ç¡å¹åæŠç¥ã®è©³çްãªè§£èª¬ã
ããã³ããšã³ãã®ãã«ããã£ãã·ã¥ã®ç¡å¹åïŒã¹ããŒãåäžã®ããã®ã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®æé©å
ããã³ããšã³ãéçºã®ããŒã¹ãéãäžçã§ã¯ããã«ãæéãéçºè ã®çç£æ§ãšãããžã§ã¯ãå šäœã®å¹çã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãããã«ããé ããšãäžæºãçãããã£ãŒãããã¯ã«ãŒããé å»¶ããæçµçã«ã¯éçºããã»ã¹å šäœãé ããªããŸããããã«å¯Ÿæããããã®æã广çãªæŠç¥ã®1ã€ã¯ããã«ããã£ãã·ã¥ã®ã€ã³ããªãžã§ã³ããªäœ¿çšãšãéèŠãªããšã«ããããã广çã«ç¡å¹ã«ããæ¹æ³ãçè§£ããããšã§ãããã®ããã°æçš¿ã§ã¯ãããã³ããšã³ãã®ãã«ããã£ãã·ã¥ã®ç¡å¹åã®è€éããæãäžããã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããæé©åããã¹ã ãŒãºãªéçºè ãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããããã®å®çšçãªæŠç¥ãæäŸããŸãã
ãã«ããã£ãã·ã¥ãšã¯äœã§ããïŒ
ãã«ããã£ãã·ã¥ã¯ã以åã®ãã«ãã¹ãããã®çµæãæ ŒçŽããæ°žç¶çãªã¹ãã¬ãŒãžã¡ã«ããºã ã§ãããã«ããããªã¬ãŒããããšããã«ãããŒã«ã¯ãã£ãã·ã¥ããã§ãã¯ããŠãæåŸã®ãã«ã以éã«å ¥åãã¡ã€ã«ãŸãã¯äŸåé¢ä¿ã倿Žããããã©ããã確èªããŸãã倿ŽãããŠããªãå Žåããã£ãã·ã¥ãããçµæãåå©çšãããæéã®ãããåã³ã³ãã€ã«ããã³ãã«ãããã³ãããã®ãã¡ã€ã«ã®æé©åã®ããã»ã¹ãã¹ããããããŸããããã«ãããç¹ã«å€ãã®äŸåé¢ä¿ãæã€å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ããã«ãæéãå€§å¹ ã«ççž®ãããŸãã
å€§èŠæš¡ãªReactã¢ããªã±ãŒã·ã§ã³ã«åãçµãã§ããã·ããªãªãæ³åããŠã¿ãŠãã ãããåäžã®ã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ã®ã¿ã倿ŽããŸãããã«ããã£ãã·ã¥ããªãå Žåããã¹ãŠã®äŸåé¢ä¿ããã®ä»ã®ã³ã³ããŒãã³ããå«ãã¢ããªã±ãŒã·ã§ã³å šäœããªãã«ãããå¿ èŠããããŸãããã«ããã£ãã·ã¥ã䜿çšãããšã倿Žãããã³ã³ããŒãã³ããšãå Žåã«ãã£ãŠã¯ãã®çŽæ¥ã®äŸåé¢ä¿ã®ã¿ãåŠçããå¿ èŠããããããå€§å¹ ãªæéãç¯çŽã§ããŸãã
ãã£ãã·ã¥ã®ç¡å¹åãéèŠãªã®ã¯ãªãã§ããïŒ
ãã«ããã£ãã·ã¥ã¯é床ã«ãšã£ãŠéåžžã«è²Žéã§ãããé©åã«ç®¡çããªããšã埮åŠã§ã€ã©ã€ã©ããåé¡ãåŒãèµ·ããå¯èœæ§ããããŸããæ ¹æ¬çãªåé¡ã¯ãã£ãã·ã¥ã®ç¡å¹åã«ãããŸããããã¯ããã£ãã·ã¥ãããçµæãæå¹ã§ãªããªãããªãã¬ãã·ã¥ããå¿ èŠãããææã倿ããããã»ã¹ã§ãã
ãã£ãã·ã¥ãé©åã«ç¡å¹åãããŠããªãå Žåãæ¬¡ã®çŸè±¡ãçºçããå¯èœæ§ããããŸãã
- å€ãã³ãŒãïŒæè¿ã®å€æŽã«ãããããããã¢ããªã±ãŒã·ã§ã³ãå€ãããŒãžã§ã³ã®ã³ãŒããå®è¡ããŠããå¯èœæ§ããããŸãã
- äºæããªãåäœïŒã¢ããªã±ãŒã·ã§ã³ãå€ãã³ãŒããšæ°ããã³ãŒããæ··åšãããŠäœ¿çšããŠããããã远跡ãå°é£ãªäžæŽåãšãã°ã
- ãããã€ã¡ã³ãã®åé¡ïŒãã«ãããã»ã¹ãææ°ã®å€æŽãåæ ããŠããªããããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ãã®åé¡ãçºçããŸãã
ãããã£ãŠãå ç¢ãªãã£ãã·ã¥ç¡å¹åæŠç¥ã¯ããã«ãã®æŽåæ§ãç¶æããã¢ããªã±ãŒã·ã§ã³ãåžžã«ææ°ã®ã³ãŒãããŒã¹ãåæ ããããã«ããããã«äžå¯æ¬ ã§ããããã¯ãèªåãã«ããé »ç¹ã«è¡ããããã«ãããã»ã¹ã®ç²ŸåºŠã«å€§ããäŸåããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒïŒCI/CDïŒç°å¢ã§ã¯ç¹ã«åœãŠã¯ãŸããŸãã
ããŸããŸãªçš®é¡ã®ãã£ãã·ã¥ç¡å¹åã®çè§£
ãã«ããã£ãã·ã¥ãç¡å¹ã«ããããã®ããã€ãã®äž»èŠãªæŠç¥ããããŸããé©åãªã¢ãããŒããéžæãããã©ããã¯ãç¹å®ã®ãã«ãããŒã«ããããžã§ã¯ãæ§é ãããã³è¡ãããŠãã倿Žã®çš®é¡ã«ãã£ãŠç°ãªããŸãã
1. ã³ã³ãã³ãããŒã¹ã®ããã·ã¥
ã³ã³ãã³ãããŒã¹ã®ããã·ã¥ã¯ãæãä¿¡é Œæ§ãé«ããäžè¬çã«äœ¿çšãããŠãããã£ãã·ã¥ç¡å¹åææ³ã®1ã€ã§ããããã«ã¯ãåãã¡ã€ã«ã®å 容ã®ããã·ã¥ïŒäžæã®ãã£ã³ã¬ãŒããªã³ãïŒãçæããããšãå«ãŸããŸããæ¬¡ã«ããã«ãããŒã«ã¯ãã®ããã·ã¥ã䜿çšããŠãæåŸã®ãã«ã以éã«ãã¡ã€ã«ã倿Žããããã©ããã倿ããŸãã
ä»çµã¿ïŒ
- ãã«ãããã»ã¹äžã«ãããŒã«ã¯åãã¡ã€ã«ã®å 容ãèªã¿åããŸãã
- ãã®ã³ã³ãã³ãã«åºã¥ããŠããã·ã¥å€ïŒMD5ãSHA-256ãªã©ã䜿çšïŒãèšç®ããŸãã
- ããã·ã¥ã¯ãã£ãã·ã¥ãããçµæãšãšãã«ä¿åãããŸãã
- åŸç¶ã®ãã«ãã§ã¯ãããŒã«ã¯åãã¡ã€ã«ã®ããã·ã¥ãåèšç®ããŸãã
- æ°ããããã·ã¥ãä¿åãããããã·ã¥ãšäžèŽããå Žåããã¡ã€ã«ã¯å€æŽãããŠããªããšèŠãªããããã£ãã·ã¥ãããçµæãåå©çšãããŸãã
- ããã·ã¥ãç°ãªãå Žåããã¡ã€ã«ã倿ŽãããŠããããããã«ãããŒã«ã¯ãããåã³ã³ãã€ã«ããæ°ããçµæãšããã·ã¥ã§ãã£ãã·ã¥ãæŽæ°ããŸãã
å©ç¹ïŒ
- æ£ç¢ºïŒãã¡ã€ã«ã®å®éã®ã³ã³ãã³ãã倿Žãããå Žåã«ã®ã¿ãã£ãã·ã¥ãç¡å¹ã«ããŸãã
- å ç¢ïŒã³ãŒããã¢ã»ãããããã³äŸåé¢ä¿ã®å€æŽãåŠçããŸãã
çæïŒ
- ãªãŒããŒãããïŒåãã¡ã€ã«ã®å 容ãèªã¿åã£ãŠããã·ã¥ããå¿ èŠããããããããçšåºŠã®ãªãŒããŒãããã远å ãããå¯èœæ§ããããŸããããã£ãã·ã¥ã®å©ç¹ããããã¯ããã«äžåããŸãã
äŸïŒWebpackïŒïŒ
Webpackã¯éåžžã`[contenthash]`ã®ãããªãã¬ãŒã¹ãã«ããŒãæã€`output.filename`ãªã©ã®æ©èœãéããŠã³ã³ãã³ãããŒã¹ã®ããã·ã¥ã䜿çšããŸããããã«ããã察å¿ãããã£ã³ã¯ã®å 容ã倿Žãããå Žåã«ã®ã¿ãã¡ã€ã«åã倿Žãããããããã©ãŠã¶ãšCDNã¯ã¢ã»ããã广çã«ãã£ãã·ã¥ã§ããŸãã
module.exports = {
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, 'dist'),
},
};
2. æéããŒã¹ã®ç¡å¹å
æéããŒã¹ã®ç¡å¹åã¯ããã¡ã€ã«ã®å€æŽã¿ã€ã ã¹ã¿ã³ãã«äŸåããŸãããã«ãããŒã«ã¯ããã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãããã£ãã·ã¥ã«ä¿åãããŠããã¿ã€ã ã¹ã¿ã³ããšæ¯èŒããŸãããã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãããã£ãã·ã¥ãããã¿ã€ã ã¹ã¿ã³ããããæ°ããå Žåããã£ãã·ã¥ã¯ç¡å¹ã«ãªããŸãã
ä»çµã¿ïŒ
- ãã«ãããŒã«ã¯ãåãã¡ã€ã«ã®æçµå€æŽã¿ã€ã ã¹ã¿ã³ããèšé²ããŸãã
- ãã®ã¿ã€ã ã¹ã¿ã³ãã¯ããã£ãã·ã¥ãããçµæãšãšãã«ä¿åãããŸãã
- åŸç¶ã®ãã«ãã§ã¯ãããŒã«ã¯çŸåšã®ã¿ã€ã ã¹ã¿ã³ããä¿åãããã¿ã€ã ã¹ã¿ã³ããšæ¯èŒããŸãã
- çŸåšã®ã¿ã€ã ã¹ã¿ã³ããåŸã§ããå Žåããã£ãã·ã¥ã¯ç¡å¹ã«ãªããŸãã
å©ç¹ïŒ
- ã·ã³ãã«ïŒå®è£ ãšçè§£ãç°¡åã§ãã
- é«éïŒã¿ã€ã ã¹ã¿ã³ãã®ç¢ºèªã®ã¿ãå¿ èŠã§ãããã¯è¿ éãªæäœã§ãã
çæïŒ
- 粟床ãäœãïŒãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ããå®éã®ã³ã³ãã³ãã®å€æŽãªãã«å€æŽãããå ŽåïŒãã¡ã€ã«ã·ã¹ãã æäœãªã©ã«ããïŒãäžå¿ èŠãªãã£ãã·ã¥ã®ç¡å¹åã«ã€ãªããå¯èœæ§ããããŸãã
- ãã©ãããã©ãŒã äŸåïŒã¿ã€ã ã¹ã¿ã³ãã®è§£å床ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªããããäžæŽåãçºçããå¯èœæ§ããããŸãã
䜿çšããã¿ã€ãã³ã°ïŒæéããŒã¹ã®ç¡å¹åã¯ããã©ãŒã«ããã¯ã¡ã«ããºã ãšããŠããŸãã¯ã³ã³ãã³ãããŒã¹ã®ããã·ã¥ãå®çŸå¯èœã§ãªãç¶æ³ããŸãã¯ãšããžã±ãŒã¹ãåŠçããããã«ã³ã³ãã³ãããã·ã¥ãšçµã¿åãããŠäœ¿çšââãããããšããããããŸãã
3. äŸåé¢ä¿ã°ã©ãåæ
äŸåé¢ä¿ã°ã©ãåæã¯ããããžã§ã¯ãå ã®ãã¡ã€ã«éã®é¢ä¿ã調ã¹ãããšã§ãããæŽç·Žãããã¢ãããŒããæ¡çšããŸãããã«ãããŒã«ã¯ãã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã衚ãã°ã©ããæ§ç¯ããŸãïŒããšãã°ãä»ã®JavaScriptãã¡ã€ã«ãã€ã³ããŒãããJavaScriptãã¡ã€ã«ïŒããã¡ã€ã«ã倿ŽããããšãããŒã«ã¯ããã«äŸåãããã¹ãŠã®ãã¡ã€ã«ãèå¥ãããããã®ãã£ãã·ã¥ãããçµæãç¡å¹ã«ããŸãã
ä»çµã¿ïŒ
- ãã«ãããŒã«ã¯ãã¹ãŠã®ãœãŒã¹ãã¡ã€ã«ãè§£æããäŸåé¢ä¿ã°ã©ããæ§ç¯ããŸãã
- ãã¡ã€ã«ã倿ŽããããšãããŒã«ã¯ã°ã©ãããã©ããŒã¹ããŠãã¹ãŠã®äŸåãã¡ã€ã«ãæ€çŽ¢ããŸãã
- 倿Žããããã¡ã€ã«ãšãã®ãã¹ãŠã®äŸåé¢ä¿ã«ã€ããŠããã£ãã·ã¥ãããçµæã¯ç¡å¹ã«ãªããŸãã
å©ç¹ïŒ
- æ£ç¢ºïŒãã£ãã·ã¥ã®å¿ èŠãªéšåã®ã¿ãç¡å¹ã«ããäžå¿ èŠãªãªãã«ããæå°éã«æããŸãã
- è€éãªäŸåé¢ä¿ãåŠçïŒè€éãªäŸåé¢ä¿ãæã€å€§èŠæš¡ãªãããžã§ã¯ãã§ã®å€æŽã广çã«ç®¡çããŸãã
çæïŒ
- è€éãïŒäŸåé¢ä¿ã°ã©ãã®æ§ç¯ãšç¶æãå¿ èŠã§ãããè€éã§ãªãœãŒã¹ã倧éã«æ¶è²»ããå¯èœæ§ããããŸãã
- ããã©ãŒãã³ã¹ïŒã°ã©ãã®ãã©ããŒã¹ã¯ãéåžžã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯é ããªãå¯èœæ§ããããŸãã
äŸïŒParcelïŒïŒ
Parcelã¯ãäŸåé¢ä¿ã°ã©ãåæãå©çšããŠãã£ãã·ã¥ãã€ã³ããªãžã§ã³ãã«ç¡å¹ã«ãããã«ãããŒã«ã§ããã¢ãžã¥ãŒã«ã倿ŽããããšãParcelã¯äŸåé¢ä¿ã°ã©ãããã¬ãŒã¹ããŠãä»ã®ã©ã®ã¢ãžã¥ãŒã«ã圱é¿ãåãããã倿ãããããã®ã¿ããªãã«ãããé«éãªã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããæäŸããŸãã
4. ã¿ã°ããŒã¹ã®ç¡å¹å
ã¿ã°ããŒã¹ã®ç¡å¹åã䜿çšãããšãã¿ã°ãŸãã¯èå¥åããã£ãã·ã¥ãããçµæã«æåã§é¢é£ä»ããããšãã§ããŸãããã£ãã·ã¥ãç¡å¹ã«ããå¿ èŠãããå Žåã¯ãç¹å®ã®ã¿ã°ã«é¢é£ä»ããããŠãããã£ãã·ã¥ãšã³ããªãç¡å¹ã«ããã ãã§ãã
ä»çµã¿ïŒ
- çµæããã£ãã·ã¥ãããšãã«ã1ã€ä»¥äžã®ã¿ã°ãå²ãåœãŠãŸãã
- åŸã§ãã£ãã·ã¥ãç¡å¹ã«ããã«ã¯ãç¡å¹ã«ããã¿ã°ãæå®ããŸãã
- ãã®ã¿ã°ãæã€ãã¹ãŠã®ãã£ãã·ã¥ãšã³ããªãåé€ãããããç¡å¹ãšããŠããŒã¯ãããŸãã
å©ç¹ïŒ
- æåå¶åŸ¡ïŒãã£ãã·ã¥ã®ç¡å¹åã现ããå¶åŸ¡ã§ããŸãã
- ç¹å®ã®ã·ããªãªã«åœ¹ç«ã¡ãŸãïŒç¹å®ã®æ©èœãŸãã¯ç°å¢ã«é¢é£ãããã£ãã·ã¥ãšã³ããªãç¡å¹ããããã«äœ¿çšã§ããŸãã
çæïŒ
- æåã§ã®åŽåïŒæåã§ã®ã¿ã°ä»ããšç¡å¹åãå¿ èŠã§ããããšã©ãŒãçºçããããå¯èœæ§ããããŸãã
- èªåç¡å¹åã«ã¯é©ããŠããŸããïŒç¡å¹åãå€éšã€ãã³ããŸãã¯æåä»å ¥ã«ãã£ãŠããªã¬ãŒãããç¶æ³ã«æé©ã§ãã
äŸïŒã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåãæ§æã«åºã¥ããŠæå¹ãŸãã¯ç¡å¹ã«ãªãæ©èœãã©ã°ã·ã¹ãã ããããšæ³åããŠãã ããããããã®æ©èœãã©ã°ã«äŸåããã¢ãžã¥ãŒã«ã®ãã£ãã·ã¥ãããçµæã«ã¿ã°ãä»ããããšãã§ããŸããæ©èœãã©ã°ã倿Žããããã察å¿ããã¿ã°ã䜿çšããŠãã£ãã·ã¥ãç¡å¹ã«ããããšãã§ããŸãã
ããã³ããšã³ãã®ãã«ããã£ãã·ã¥ã®ç¡å¹åã®ãã¹ããã©ã¯ãã£ã¹
广çãªããã³ããšã³ãã®ãã«ããã£ãã·ã¥ã®ç¡å¹åãå®è£ ããããã®ãã¹ããã©ã¯ãã£ã¹ã次ã«ç€ºããŸãã
1. é©åãªæŠç¥ãéžæãã
æé©ãªãã£ãã·ã¥ç¡å¹åæŠç¥ã¯ããããžã§ã¯ãã®ç¹å®ã®ããŒãºã«ãã£ãŠç°ãªããŸããã³ã³ãã³ãããŒã¹ã®ããã·ã¥ã¯äžè¬çã«æãä¿¡é Œã§ãããªãã·ã§ã³ã§ããããã¹ãŠã®ã¿ã€ãã®ãã¡ã€ã«ãŸãã¯ãã«ãããŒã«ã«é©ããŠãããšã¯éããŸãããæ±ºå®ãäžãéã¯ã粟床ãããã©ãŒãã³ã¹ãããã³è€éãã®éã®ãã¬ãŒããªããèæ ®ããŠãã ããã
ããšãã°ãWebpackã䜿çšããŠããå Žåã¯ããã¡ã€ã«åã§ã®ã³ã³ãã³ãããã·ã¥ã®çµã¿èŸŒã¿ãµããŒããæŽ»çšããŸããParcelã®ãããªãã«ãããŒã«ã䜿çšããŠããå Žåã¯ãäŸåé¢ä¿ã°ã©ãåæãå©çšããŠãã ãããåçŽãªãããžã§ã¯ãã§ã¯ãæéããŒã¹ã®ç¡å¹åã§ååãªå ŽåããããŸããããã®å¶éã«æ³šæããŠãã ããã
2. ãã«ãããŒã«ãæ£ããæ§æãã
ã»ãšãã©ã®ããã³ããšã³ããã«ãããŒã«ã«ã¯ããã£ãã·ã¥ã®åäœãå¶åŸ¡ããããã®æ§æãªãã·ã§ã³ãçšæãããŠããŸãããã£ãã·ã¥ã广çã«äœ¿çšãããé©åã«ç¡å¹åãããããã«ããããã®ãªãã·ã§ã³ãæ£ããæ§æããŠãã ããã
äŸïŒViteïŒïŒ
Viteã¯ãéçºã«ãããæé©ãªããã©ãŒãã³ã¹ã®ããã«ãã©ãŠã¶ãã£ãã·ã¥ãå©çšããŸãã`build.rollupOptions.output.assetFileNames`ãªãã·ã§ã³ã䜿çšããŠãã¢ã»ããã®ãã£ãã·ã¥æ¹æ³ãæ§æã§ããŸãã
// vite.config.js
import { defineConfig } from 'vite'
export default defineConfig({
build: {
rollupOptions: {
output: {
assetFileNames: 'assets/[name]-[hash][extname]'
}
}
}
})
3. å¿ èŠã«å¿ããŠãã£ãã·ã¥ãã¯ãªã¢ãã
åé¡ã®è§£æ±ºããã¢ããªã±ãŒã·ã§ã³ãæåãããã«ããããŠããããšã確èªããããã«ããã«ããã£ãã·ã¥ãæåã§ã¯ãªã¢ããå¿ èŠãããå ŽåããããŸããã»ãšãã©ã®ãã«ãããŒã«ã«ã¯ããã£ãã·ã¥ãã¯ãªã¢ããããã®ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãŸãã¯APIãçšæãããŠããŸãã
äŸïŒnpmïŒïŒ
npm cache clean --force
äŸïŒYarnïŒïŒ
yarn cache clean
4. CI/CDãã€ãã©ã€ã³ãšã®çµ±å
CI/CDç°å¢ã§ã¯ããã£ãã·ã¥ã®ç¡å¹åãé©åã«åŠçããããã«ãã«ãããã»ã¹ãæ§æããããšãéèŠã§ããããã«ã¯ãåãã«ãã®åã«ãã£ãã·ã¥ãã¯ãªã¢ããããšãã³ã³ãã³ãããŒã¹ã®ããã·ã¥ã䜿çšããŠå€æŽããããã¡ã€ã«ã®ã¿ããªãã«ããããããã«ããããšãCI/CDãã©ãããã©ãŒã ã§ã®ãã£ãã·ã¥ãé©åã«æ§æããããšãå«ãŸããå ŽåããããŸãã
äŸïŒGitHub ActionsïŒïŒ
GitHub Actionsã䜿çšããŠãäŸåé¢ä¿ãšãã«ãææç©ããã£ãã·ã¥ã§ããŸããé©åãªç¡å¹åãä¿èšŒããã«ã¯ãããã¯ãã¡ã€ã«ã®ããã·ã¥ããã®ä»ã®é¢é£èŠçŽ ãçµã¿èŸŒãã ããŒã䜿çšããŸãã
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v3
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys:
${{ runner.os }}-yarn-
5. ãã«ãæéãç£èŠãã
ãã«ãæéã宿çã«ç£èŠããŠãæœåšçãªããã©ãŒãã³ã¹ããã«ããã¯ãç¹å®ããŸãããã«ãæéãå¢å ããŠããå Žåã¯ããã£ãã·ã¥ã广çã«äœ¿çšãããŠãããã©ãããããã³ç¡å¹åæŠç¥ãæåŸ ã©ããã«æ©èœããŠãããã©ããã調æ»ããŸãã
Webpack Bundle Analyzerã®ãããªããŒã«ã¯ããã³ãã«ãµã€ãºãèŠèŠåããæé©åã®æ©äŒãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããCI/CDãã©ãããã©ãŒã ã¯ãæéã®çµéã«äŒŽãããã©ãŒãã³ã¹ã远跡ããããã«äœ¿çšã§ãããã«ãæéã®ã¡ããªãã¯ãæäŸããããšããããããŸãã
6. ãªã¢ãŒããã£ãã·ã¥ãæ€èšãã
忣ç°å¢ã§äœæ¥ããŠããããŒã ã®å Žåããªã¢ãŒããã£ãã·ã¥ã䜿çšãããšããã«ãæéãå€§å¹ ã«æ¹åã§ããŸãããªã¢ãŒããã£ãã·ã¥ã«ã¯ããã«ããã£ãã·ã¥ãäžå åããããµãŒããŒã«ä¿åããéçºè ããã£ãã·ã¥ãå ±æããŠãåããã¡ã€ã«ãç¹°ãè¿ããªãã«ãããããšãåé¿ã§ããããã«ããããšãå«ãŸããŸãã
Nx CloudãTurborepoã®ãããªããŒã«ã¯ããã«ãããã»ã¹ãšçµ±åã§ãããªã¢ãŒããã£ãã·ã¥æ©èœãæäŸããŸãã
é©åãªãã«ãããŒã«ã®éžæ
ãã«ãããŒã«ã®éžæã¯ããã«ããã£ãã·ã¥ã®ç®¡çæ¹æ³ãšç¡å¹åæŠç¥ã®å®è£ æ¹æ³ã«å€§ããªåœ±é¿ãäžããŸããããã€ãã®äžè¬çãªããŒã«ãšãã®ãã£ãã·ã¥æ©èœã®æŠèŠã次ã«ç€ºããŸãã
- WebpackïŒãã©ã°ã€ã³ãšæ§æãªãã·ã§ã³ãéããŠãã£ãã·ã¥ãåºç¯ã«ãµããŒããããé«åºŠã«æ§æå¯èœãªãã³ãã©ãŒãå ç¢ãªãã£ãã·ã¥ç¡å¹åã®ããã«ã³ã³ãã³ãããã·ã¥ãå©çšããŸãã
- ParcelïŒé«éãªã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ããã«ãã£ãã·ã¥ãšäŸåé¢ä¿ã°ã©ãåæãèªåçã«ç®¡çããããŒãæ§æã®ãã³ãã©ãŒã
- ViteïŒéçºäžã«ãã€ãã£ãESã¢ãžã¥ãŒã«ã䜿çšããæ¬çªãã«ãã«Rollupã䜿çšãããé«éã§è»œéãªãã«ãããŒã«ãç¹ã«éçºäžã«ãåªãããã£ãã·ã¥ããã©ãŒãã³ã¹ãæäŸããŸãã
- esbuildïŒGoã§èšè¿°ãããéåžžã«é«éãªJavaScriptãã³ãã©ãŒããã³ãããã¡ã€ã¢ãWebpackãParcelã®ãããªæŽç·Žããããã£ãã·ã¥ã·ã¹ãã ã¯ãããŸãããããã®é床ã¯ãããè£ãããšããããããŸãã
ãã«ãããŒã«ãéžæããéã¯ã次ã®èŠçŽ ãèæ ®ããŠãã ããã
- ãããžã§ã¯ãã®ãµã€ãºãšè€éãïŒå€§èŠæš¡ã§è€éãªãããžã§ã¯ãã®å Žåãå ç¢ãªãã£ãã·ã¥ããã³äŸåé¢ä¿ç®¡çæ©èœãåããããŒã«ãäžå¯æ¬ ã§ãã
- æ§æèŠä»¶ïŒäžéšã®ããŒã«ã¯ä»ã®ããŒã«ãããå€ãã®æ§æãå¿ èŠã§ããæ±ºå®ãäžãéã¯ãããŒã ã®çµéšãšå¥œã¿ãèæ ®ããŠãã ããã
- ããã©ãŒãã³ã¹ïŒãããžã§ã¯ãã§ããŸããŸãªããŒã«ã®ãã«ãæéãè©äŸ¡ããŠãæé©ãªããã©ãŒãã³ã¹ãæäŸããããŒã«ã決å®ããŸãã
- ã³ãã¥ããã£ãµããŒããšãšã³ã·ã¹ãã ïŒåŒ·åãªã³ãã¥ããã£ãšè±å¯ãªãã©ã°ã€ã³ãšæ¡åŒµæ©èœã®ãšã³ã·ã¹ãã ãåããããŒã«ãéžæããŸãã
äžè¬çãªèœãšã穎ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°
é©åã«å®çŸ©ããããã£ãã·ã¥ç¡å¹åæŠç¥ããã£ãŠããåé¡ãçºçããå¯èœæ§ããããŸããäžè¬çãªèœãšã穎ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ãã³ããæ¬¡ã«ç€ºããŸãã
- å€ãã³ãŒãïŒæè¿ã®å€æŽã«ããããããå€ãã³ãŒãã衚瀺ãããå Žåã¯ããã£ãã·ã¥ç¡å¹åã®èšå®ãå確èªããã³ã³ãã³ãããã·ã¥ãæ£ããæ§æãããŠããããšã確èªããŠãã ããããã£ãã·ã¥ãæåã§ã¯ãªã¢ããŠãå®å šã«ãªãã«ãããŠã¿ãŠãã ããã
- äžè²«æ§ã®ãªããã«ãïŒäžè²«æ§ã®ãªããã«ãã¯ããã«ãç°å¢ã®ããªãšãŒã·ã§ã³ã«ãã£ãŠçºçããå¯èœæ§ããããŸãããã¹ãŠã®éçºè ãåãããŒãžã§ã³ã®Node.jsãnpmãããã³ãã®ä»ã®äŸåé¢ä¿ã䜿çšããŠããããšã確èªããŠãã ãããDockerã®ãããªããŒã«ã䜿çšããŠãäžè²«ãããã«ãç°å¢ãäœæããŸãã
- ãã«ãæéã®é å»¶ïŒãã£ãã·ã¥ãæå¹ã«ãªã£ãŠããã«ãããããããã«ãæéãé ãå Žåã¯ããã³ãã«ãµã€ãºãåæããæé©åã®æ©äŒãç¹å®ããŸããWebpack Bundle Analyzerã®ãããªããŒã«ã䜿çšããŠããã³ãã«ãèŠèŠåãã倧ããªäŸåé¢ä¿ãç¹å®ããŸãã
- ãã¡ã€ã«ã·ã¹ãã ã®åé¡ïŒãã¡ã€ã«ã·ã¹ãã æäœããã£ãã·ã¥ã®ç¡å¹åã劚ããå ŽåããããŸãããã¡ã€ã«ã·ã¹ãã ãæ£ããæ§æãããŠããããšãããã³ååãªãã£ã¹ã¯å®¹éãããããšã確èªããŠãã ããã
- ãã£ãã·ã¥ã®æ§æãæ£ãããªãïŒãã«ãããŒã«ã®æ§æã確èªããŠããã£ãã·ã¥ãæå¹ã«ãªã£ãŠããããšãšãæ£ããæ§æãããŠããããšã確èªããŠãã ããããã£ãã·ã¥ã®å Žæãæå¹æéãããã³ç¡å¹åã«é¢é£ããèšå®ã«æ³šæããŠãã ããã
å®éã®äŸ
ããŸããŸãªçµç¹ããã«ããã£ãã·ã¥ã®ç¡å¹åã䜿çšããŠããã³ããšã³ãéçºã¯ãŒã¯ãããŒãæé©åããŠããå®éã®äŸãããã€ãèŠãŠã¿ãŸãããã
- å€§èŠæš¡ãªeã³ããŒã¹ãã©ãããã©ãŒã ïŒè€éãªãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ãåããå€§èŠæš¡ãªeã³ããŒã¹ãã©ãããã©ãŒã ã¯ãã³ã³ãã³ãããã·ã¥ãæã€Webpackã䜿çšããŠã倿Žããããã€ã¯ãããã³ããšã³ãã®ã¿ããªãã«ãããã³ãããã€ãããããã«ããŸãããŸãããªã¢ãŒããã£ãã·ã¥ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠã忣éçºããŒã å šäœã§ãã«ããã£ãã·ã¥ãå ±æããŠããŸãã
- ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãïŒãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã¯Parcelã䜿çšããŠããã«ãããã»ã¹ãç°¡çŽ åãããã£ãã·ã¥ãèªåçã«ç®¡çããŸããParcelã®äŸåé¢ä¿ã°ã©ãåæã«ããããã£ãã·ã¥ã®å¿ èŠãªéšåã®ã¿ãç¡å¹åããããããé«éãªã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããå®çŸããŸãã
- ã¹ã¿ãŒãã¢ããïŒã¹ã¿ãŒãã¢ããã¯ããã®é«éãªéçºé床ãšåªãããã£ãã·ã¥ããã©ãŒãã³ã¹ã®ããã«Viteã䜿çšããŠããŸããViteãéçºäžã«ãã€ãã£ãESã¢ãžã¥ãŒã«ã䜿çšããããšã§ãã»ãŒç¬æã®æŽæ°ãå¯èœã«ãªããŸãã
çµè«
广çãªããã³ããšã³ãã®ãã«ããã£ãã·ã¥ã®ç¡å¹åã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®æé©åããã«ãæéã®ççž®ãããã³éçºè ãšã¯ã¹ããªãšã³ã¹ã®åäžã«äžå¯æ¬ ã§ããããŸããŸãªçš®é¡ã®ãã£ãã·ã¥ç¡å¹åæŠç¥ãçè§£ãããã¹ããã©ã¯ãã£ã¹ã«åŸããé©åãªãã«ãããŒã«ãéžæããããšã§ãããã³ããšã³ãéçºã¯ãŒã¯ãããŒãå€§å¹ ã«åŒ·åã§ããŸãããã«ãæéã宿çã«ç£èŠãããã£ãã·ã¥ã®ç¡å¹åæŠç¥ãå¿ èŠã«å¿ããŠèª¿æŽããŠãæé©ãªããã©ãŒãã³ã¹ã確ä¿ããããšãå¿ããªãã§ãã ãããé床ãšå¹çãæãéèŠãªäžçã§ã¯ããã«ããã£ãã·ã¥ã®ç¡å¹åãç¿åŸããããšã¯ãçç£æ§ã®åäžãšãã幞ããªéçºããŒã ãžã®æè³ãšãªããŸããé©åã«æ§æããããã«ããã£ãã·ã¥ã®åãéå°è©äŸ¡ããªãã§ãã ãããããã¯ãããé«éã§å¹ççãªããã³ããšã³ãéçºãå®çŸããããã®ç§å¯å µåšã«ãªãå¯èœæ§ããããŸãã